草庐IT

Java TLS-PSK 套接字

全部标签

c - 访问 TCP header 字段(没有原始套接字 API)

我正在编写一个需要访问TCPheader字段的应用程序,例如,序列号或TCP时间戳字段。是否可以通过在套接字API上操作而不监听原始套接字来获取序列号(或其他header字段)?(我想避免过滤掉所有数据包)。我正在查看TCP_INFO,但它的信息有限。例如,在调用recvmsg()并获得数据缓冲区后,是否有可能知道在该接收数据缓冲区中传送最后一个字节的段的序列号?谢谢 最佳答案 可以尝试使用libpcap来抓包。此库允许使用与Wireshark中相同的语法指定数据包过滤器,因此您可以将捕获的数据包限制为仅一个连接。一个缺点是您也必须

sockets - 从应用程序重置 TCP 套接字连接

如何使用Perl或C中的IO::Socket::INET在应用程序级别重置一个accepted套接字?有一个程序在TCP端口上绑定(bind)、监听、接受客户端连接,之后它读取和写入一些数据。如果我只是简单地关闭或关闭套接字,TCP层会正常终止(使用FIN数据包),而不是生成RST数据包。 最佳答案 您没有指定您正在使用的确切操作系统。我发现Linux确实有一个API调用可以重置TCP连接,我不知道它的可移植性如何。方法是在已连接的套接字上使用connect系统调用,但这次使用AF_UNSPEC系列。以这种方式重置套接字后,甚至可以

linux - 在读取所有数据之前写入 TCP 套接字的行为

我一直在为我的一些应用程序编写小型特定用途的HTTP服务器,我注意到,如果您在read()之前write()全部可用数据,字节未正确发送。例如,在read()ingonly我的浏览器发送的请求行(GET/HTTP/1.1\r\n)之后,我写入():HTTP/1.1200OK\r\nConnection:close\r\rContent-Type:text/html\r\n\r\n(someHTMLstuff)此write()的Wireshark捕获:'\n'字节和Content-Typeheader都不见了!(Wireshark始终在HTTPheader部分显示'\n'字节,如果它们存

Python TCP 套接字 : How to know if a specific connection has sent information

我有一个多线程Python3应用程序,它在线程#1上接受TCP套接字通信。线程#2将检查所有当前连接是否有任何要接收的信息,然后采取相应行动。所以,目前我有一个名为all_connections的列表,它是已接受的套接字连接对象的列表。使用forconnectioninall_connections:我可以遍历所有连接对象。我知道我使用conn.recv(256)来检查是否有任何准备好在此套接字上接收。这会阻止循环直到有东西可以接收吗?我已经预先设置了conn.setblocking(1)尽管我不确定这是否是解决它的最佳方法:下面是一些示例代码:线程1self.all_connecti

我可以使用 inet_pton 为我的 TCP 套接字服务器设置文本地址,例如 "device1.local"吗?

我用C编写了一个TCP套接字,它需要与通过本地网络连接到此地址的移动应用程序一起使用:“device1.local:6666”。我找到的每个使用inet_pton()设置服务器地址的示例都有一个如下所示的IPV4地址:192.168.1.34,或者一个IPV6地址看起来像这样:2001:db8:8714:3a90::12。如果我希望我的客户端远程登录到“device1.local”而不是数字或十六进制地址,我应该指定哪种格式?如何设置我的TCP套接字服务器来响应该地址?这行不通:local_socket=socket(AF_INET6,SOCK_STREAM,0);if(local_s

c - 使用 Select 的套接字客户端

我正在尝试实现一个客户端功能,该功能可以使用select()功能与多个服务器建立连接。但我不是使用select()函数的专家。但是,我的客户端可以启用与多个服务器的连接,但无法从这些多个服务器读取消息。按照我的以下示例,我将我的客户端连接到两台服务器(192.168.100.136,192.168.100.138)。连接到这两台服务器后,我的客户端只从一台服务器(192.168.100.136)接收消息,而不是从多台服务器接收消息..我不确定我在示例程序中使用select()函数的方式。请更正我的示例应用程序以获得所需的o/p..提前致谢intmain(){intport=10001;

java - 套接字客户端永远阻塞

我正在用Java编写套接字客户端。在程序中,我想从服务器获取信息。当服务器收到“GET_LIGHTS”命令时,它会以JSON格式发回数据。但在我的代码中,bw.write()和bw.flush()在socket.close()之前不起作用.因此,BufferedReader对象未就绪:br.ready()返回false。我的代码有什么错误吗?客户端代码如下所示。packagemonitor;importjava.io.*;importjava.net.InetSocketAddress;importjava.net.Socket;importjava.util.ArrayList;pu

java - Netty TCP 套接字输入流

NettyTCP服务器正在端口8000上运行,接收NMEA格式的数据。它使用MarineAPI库将乱码转换为有意义的信息,需要来自套接字的输入流。SentenceReadersentenceReader=newSentenceReader(socket.getInputStream());sentenceReader.addSentenceListener(newMultiSentenceListener());sentenceReader.start();如何获取正在使用的netty服务器端口的输入流? 最佳答案 Sentence

python - 如何重用 TCP 套接字 python

我想做什么我想用不同的IP和PORT再次使用sTCP.connect()我的问题在while的下一个交互中(当我有一个与上一个不同的IP和PORT时),我得到一个错误:“这个连接已经在使用中”我该怎么做才能让它发挥作用?套接字在while循环之前声明。为了清楚起见,我将只显示while循环:whiley!=numero_de_lineas:print"Interaccionnumero",yifreintentar==1:printyreintentar=0tupla=(str(iplista[y]),int(portlista[y]))sUDP.sendto(mensaje1,tup

Python TCP 'Send' 套接字缓冲区大小

我想使用TCPPythonsocket模块发送/接收“部分”数据。我的接收服务器端socket设置为在单个recv调用中接收40字节的数据:whileTrue:data=connection.recv(40)ifnotdata:break...connection.close()我有一些示例数据~500字节长,转换为bytes对象,由“客户端”发送到“服务器”:s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)...s.send(sample_data)虽然我只调用了一次send方法,但这是否意味着客户端一次发送40个字节的“sampl